// 需求：计算购物车数据中，被勾选商品的总价
void main() {
  // 准备购物车数据
  List carts = [
    {"count": 2, "price": 10.0, "selected": true},
    {"count": 1, "price": 30.0, "selected": false},
    {"count": 5, "price": 20.0, "selected": true}
  ];

  // 方式一：使用 for 循环
  // double totalPrice = 0;
  // for (var i = 0; i < carts.length; i++) {
  //   var cart = carts[i];
  //   if (cart["selected"]) {
  //     totalPrice += cart["count"] * cart["price"];
  //   }
  // }
  // print(totalPrice);

  // 方式二：使用 for-in 循环
  // double totalPrice = 0;
  // for (var cart in carts) {
  //   if (cart["selected"]) {
  //     totalPrice += cart["count"] * cart["price"];
  //   }
  // }
  // print(totalPrice);

  // 方式三：使用 map 函数
  // [20, 0, 100]
  // double totalPrice = carts.map((cart) {
  //   if (cart["selected"]) {
  //     return cart["count"] * cart["price"];
  //   } else {
  //     return 0;
  //   }
  // }).reduce((value, element) => value + element);
  // print(totalPrice);

  // 方式四：使用 fold 函数
  // double totalPrice = carts.fold(0, (value, item) {
  //   if (item['selectd']) {
  //     return value + item['price'] * item['count'];
  //   }
  //   return value;
  // });
  // // 5.2 打印选中商品的总金额
  // print('5.2.选中商品的总金额为：${totalPrice.toStringAsFixed(2)}');

  // 补充 ：使用 where 函数
  // 5.3 获取购物车中，被选中商品的信息
  List selectedCarts = carts.where((item) => item['selected']).toList();
  print(selectedCarts);

  // 5.4 获取购物车中，被选中商品的价格
  List selectedPrices = selectedCarts.map((item) => item['price']).toList();
  print(selectedPrices);
}

sum(a, b) {
  int ret = a + b;
  return ret;
}
